package entity

import "time"

// AuditLog 审计日志实体
type AuditLog struct {
	ID          int64     `json:"id" gorm:"primaryKey;column:id"`                   // 审计日志ID
	UserID      int64     `json:"user_id" gorm:"not null;column:user_id"`           // 用户ID
	Action      string    `json:"action" gorm:"size:50;not null;column:action"`     // 操作 create, read, update, delete, execute
	Resource    string    `json:"resource" gorm:"size:50;not null;column:resource"` // 资源 database, table, query
	ResourceID  int64     `json:"resource_id" gorm:"not null;column:resource_id"`   // 资源ID
	Description string    `json:"description" gorm:"size:500;column:description"`   // 描述
	IP          string    `json:"ip" gorm:"size:50;column:ip"`                      // IP地址
	UserAgent   string    `json:"user_agent" gorm:"size:500;column:user_agent"`     // 用户代理
	Status      string    `json:"status" gorm:"size:20;not null;column:status"`     // 状态 success, failed
	Error       string    `json:"error" gorm:"size:500;column:error"`               // 错误
	CreatedAt   time.Time `json:"created_at" gorm:"not null;column:created_at"`     // 创建时间
}

// TableName 指定AuditLog对应的表名
func (AuditLog) TableName() string {
	return "audit_logs"
}
